from typing import List


class Solution:

    """ 方法：双指针法
    逻辑:
    使用两个指针分别指向数组的两端，计算当前容器的面积，并逐步向内移动较短的那根指针，
    直到两个指针相遇。每次移动指针时，更新最大面积。

    Args:
    height (List[int]): 一个整数数组，表示容器的高度。

    Returns:
    int: 可以容纳最多水的容器的面积。

    Time:
    O(n)，其中 n 是数组的长度。每个指针最多遍历整个数组一次。

    Space:
    O(1)，只使用了常数级的额外空间。
    """
    def maxArea(self, height: List[int]) -> int:
        n = len(height)
        ans, left, right = 0, 0, n - 1
        while left < right:
            area = (right - left) * min(height[left], height[right])
            ans = max(ans, area)
            if height[left] < height[right]:
                left += 1
            else:
                right -= 1
        return ans